import matplotlib.pyplot as plt
import pandas as pd

# 默认情况下，plt是不支持中文的，需要设置全局属性
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

# 1.读取学生成绩数据，进行预处理【数据清洗】
df = pd.read_excel("./source.xlsx")
# 查看前5行数据
print(df.head())
# 表格中有一些缺失值，我们需要进行填充
df = df.fillna(0)
# print(df)

# 2.根据平时成绩和考试成绩，计算总分
df['总分'] = df['平时成绩']*0.3 + df['考试成绩']*0.7
print(df.head())

# 3.判断学生是否及格
df['是否及格'] = df['总分'].apply(lambda  x: ('及格' if x>=60 else '不及格'))
print(df.head())

# 4.计算及格率【进行数据可视化】
# df['是否及格'] == '及格' 返回真值表
# 真值表进行计算的时候 True代表1  False代表0
pct = (df['是否及格'] == '及格').mean()
print(f"及格率是{(pct*100):.2f}%")

pass_count = df['是否及格'].value_counts()
print(pass_count)
pass_count.plot(kind="pie",
                autopct="%1.2f%%",
                explode=(0, 0.05))
plt.savefig("pass_pct.png")
plt.show()

# 5.保存处理的结果
df.to_excel("处理后的学生成绩表.xlsx",
            index=False # 不保存行标签
            )
print("保存成功")